﻿using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Wallpaper.Models.Entities;

namespace Wallpaper.Data.Configurations
{
    public class AdminConfiguration : IEntityTypeConfiguration<Admin>
    {
        public void Configure(EntityTypeBuilder<Admin> builder)
        {
            builder.ToTable("admins");

            // 配置主键
            builder.HasKey(a => a.Id);
            builder.Property(a => a.Id)
                .HasMaxLength(36)
                .IsRequired()
                .HasComment("管理员主键ID");

            // 账号配置
            builder.Property(a => a.Account)
                .HasMaxLength(50)
                .IsRequired()
                .HasComment("管理员账号，用于登录");

            // 密码哈希配置
            builder.Property(a => a.PasswordHash)
                .HasMaxLength(255) // bcrypt哈希值较长
                .IsRequired()
                .HasComment("密码哈希值");

            // 头像配置
            builder.Property(a => a.AvatarUrl)
                .HasMaxLength(500)
                .IsRequired(false) // 允许为空
                .HasComment("管理员头像URL");

            //创建时间
            builder.Property(a => a.CreatedAt)
              .IsRequired()
              .HasDefaultValueSql("CURRENT_TIMESTAMP")
              .HasComment("创建时间");

            // 更新时间配置
            builder.Property(a => a.UpdatedAt)
                .IsRequired(false)
                .HasComment("更新时间");


            // 状态配置
            builder.Property(a => a.IsEnabled)
                .HasDefaultValue(true)
                .HasComment("账号状态：true-启用,false-禁用");

            // 软删除配置
            builder.Property(a => a.IsDeleted)
                .HasDefaultValue(false)
                .HasComment("软删除标志：true-已删除,false-正常");

            // 添加全局查询过滤器（自动过滤已删除的管理员）
            builder.HasQueryFilter(a => a.IsDeleted == false);
        }
    }
}
